package core;
/**
 * Egy játékbeli elemnek az interfésze.
 * 
 * @author Szabolcs
 *
 */
public interface Item {
	/**
	 * 
	 * @return visszaadja az elem nevét
	 */
	public String getName();

	/**
	 * 
	 * @return visszaadja, hogy ven-e ára
	 */
	public boolean hasPrice();

	/**
	 * 
	 * @return visszaadja az árát
	 */
	public int getPrice();

	/**
	 * 
	 * @return visszaadja, hogy tartozik-e valamilyen csoportba
	 */
	public boolean hasGroup();
	
	/**
	 * 
	 * @return visszaadja a csoportot
	 */
	public int getGroup();

	/**
	 * 
	 * @return visszaadja a csoportban lévő elemek maximális számát
	 */
	public int getNrOfItemsInGroup();

	/**
	 * 
	 * @param thrownValue a dobás értéke
	 * @param nr hány hasonló csoportú elem van
	 * @return visszaadja a bérlési díjjat
	 */
	public int getRentalPrice(int thrownValue, int nr);

	/**
	 * 
	 * @param p a játékos aki az elemen tartózkodik
	 * @return a cselekvés, amit el kell végezzen a játékos
	 */
	public boolean action(Player p);

	/**
	 * 
	 * @param p a vásárló
	 * @return téríti, hogy sikeres volt-e a vásárlás
	 */
	public boolean sell(Player p);

	/**
	 * 
	 * @return téríti az elem tulajdonosát, ha van, ha nem null-t
	 */
	public Player getOwner();
}
